A command queue is used in memory controllers for computer systems. In order to efficiently process an outstanding number of memory transactions, the command queue may accept memory transactions to be scheduled, rearrange the schedule of the accepted memory transactions, store the scheduled transactions in queue entries within the command queue, select the stored transactions to be output according to specific rules, and output the memory transactions for transmission on a memory interface to a memory device.